import { Request, Response, NextFunction } from 'express'

// 错误处理中间件
export const errorHandler = (err: any, req: Request, res: Response, next: NextFunction) => {
    console.error('Error:', err)

    // 处理验证错误
    if (err.name === 'ValidationError') {
        return res.status(400).json({
            error: '验证失败',
            details: err.errors
        })
    }

    // 处理权限错误
    if (err.name === 'UnauthorizedError') {
        return res.status(401).json({
            error: '未授权'
        })
    }

    // 处理数据库错误
    if (err.name === 'PrismaClientKnownRequestError') {
        return res.status(400).json({
            error: '数据库操作失败',
            details: err.message
        })
    }

    // 处理文件上传错误
    if (err.name === 'MulterError') {
        return res.status(400).json({
            error: '文件上传失败',
            details: err.message
        })
    }

    // 默认错误响应
    res.status(500).json({
        error: '服务器内部错误',
        message: process.env.NODE_ENV === 'development' ? err.message : undefined
    })
}

// 404 处理
export const notFoundHandler = (req: Request, res: Response) => {
    res.status(404).json({
        error: '未找到请求的资源'
    })
} 